const { createOrUpdate, findCarts, updateCarts, removeCarts,selectAllCarts } = require('../service/cart.service')
const { cartFormatError } = require('../constant/err.type')
class cartController {
  async add(ctx) {
    const user_id = ctx.state.user.id
    const { goods_id } = ctx.request.body
    // console.log(user_id, goods_id);
    const res = await createOrUpdate(user_id, goods_id)
    ctx.body = {
      code: 0,
      message: '加入购物车成功',
      result: res
    }
  }
  async findAll(ctx) {
    const { pageNum = 1, pageSize = 5 } = ctx.request.query
    const user_id = ctx.state.user.id
    const res = await findCarts(pageNum, pageSize, user_id)

    ctx.body = {
      code: 0,
      message: '获取购物车列表成功',
      result: res
    }
  }
  async update(ctx) {
    //  解析参数
    const { id } = ctx.request.params
    const { number, selected } = ctx.request.body

    if (number === undefined && selected === undefined) {
      cartFormatError.message = 'number和selected不能同时为空'
      return ctx.app.emit('error', cartFormatError, ctx)
    }
    // 操作数据库
    const res = await updateCarts({ id, number, selected })
    // 返回数据
    ctx.body = {
      code: 0,
      message: '更新购物车成功',
      result: res
    }
  }
  async remove(ctx) {
    const { ids } = ctx.request.body
    const user_id = ctx.state.user.id

    const res = await removeCarts(user_id, ids)
    ctx.body = {
      code: 0,
      message: '删除购物车成功',
      result: res
    }
  }
  async selectAll(ctx) {
    const user_id = ctx.state.user.id
    const {selected} =ctx.request.body
    const res = await selectAllCarts(user_id,selected)

    ctx.body = {
      code: 0,
      message: '全选与否更改成功',
      result: res
    }
  }

}

module.exports = new cartController()